package com.niit.covid.sum;


import com.niit.covid.bean.CovidCountBean;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

import java.io.IOException;

/**
 * @author:Ys
 * @date: 2022年08月11日 14:07
 * @desc:
 */                 //                       州       病数 死数     州    病总数 死总数
public class CovidSumReducer extends Reducer<Text, CovidCountBean,Text,CovidCountBean> {
    CovidCountBean outValue = new CovidCountBean();//最终输出的值

    @Override           //map给的key        相同Key下的所有值集合 --很多数据     上下文 承上启下
    protected void reduce(Text key,    Iterable<CovidCountBean> values,    Context context) throws IOException, InterruptedException {
        /**                             阿拉斯加州下的 每一天的 病数 和 死数
         * 创建统计变量
         */
        long totalCases = 0;
        long totalDeaths = 0;

        /**
         * 遍历该州的各个县的数据
         */
        for(CovidCountBean value  : values){//对values进行遍历 得到每一个CovidCountBean(病数、死数)
            totalCases += value.getCases();
            totalDeaths += value.getDeaths();
        }


        /**
         * 输出结果赋值
         */
        outValue.set(totalCases,totalDeaths);
              //   map传递过来的州            计算并封装好病总数和死总数
        context.write(key,                  outValue);
        // 承上 ：map   启下：最终的输出



    }
}
